package com.das.mechanic_base.mvp.contract.sivetain;

import com.das.mechanic_base.base.X3IBaseView;
import com.das.mechanic_base.bean.common.UploadVideoBean;
import com.das.mechanic_base.bean.create.ServiceInfoBean;
import com.das.mechanic_base.bean.live.FetchLiveBean;
import com.das.mechanic_base.bean.maintain.AdvanceTimeBean;
import com.das.mechanic_base.bean.maintain.CancelWorkBean;
import com.das.mechanic_base.bean.maintain.WorkBaseHeaderBean;
import com.das.mechanic_base.bean.processsive.ProcessSiveTempLetBean;

import java.util.List;

public interface IntentSiveContract {

    interface View extends X3IBaseView {

        /**
         * 提供id
         */
        long providerWorkBaseId();

        /**
         * 返回工序服务列表成功
         *
         * @param workBaseTechnicsTempletBeans
         */
        void saveTechnicsTempletList(List<ProcessSiveTempLetBean> workBaseTechnicsTempletBeans);

        /**
         * 获取可取消的项目成功
         */
        void requestCancelWorkSuccess(List<CancelWorkBean> cancelWorkBeans);

        /**
         * 取消施工之后 更改title
         *
         * @param
         */
        void changeServiceName(List<String> serviceNameList);

        /**
         * 取消最后一个项目时 销毁页面
         */
        void finishCurrent();

        /**
         * 确认提前施工之后需要改变状态
         */
        void updateAfterWork(boolean isFlag, AdvanceTimeBean advanceTimeBean);

        /**
         * 回传施工单技师及车辆信息
         */
        void getWorkBaseHeaderInfo(WorkBaseHeaderBean headerBean);
        void getWorkBaseHeaderInfoFail();

        /**
         * 提供接车单id
         * @return
         */
        long providerReceiveBaseId();

        /**
         * 返回效验结果
         */
        void validStartStepSuccess(boolean isCover);

        void setContainMe(boolean isContainMe);
        void setContainMeFail( );

        /**
         * 获取店铺正在直播的房间成功 正在直播的数量
         */
        void getStoreLiveRoomSuccess(int size);

        /**
         * 发送施工报告
         */
        void  jumpComplete();

        void getLiveInfoSuccess(FetchLiveBean fetchLiveBean);

        void getUploadVideoSuccess(List<UploadVideoBean> uploadVideoBean);

        void getWorkBaseSuccess(ServiceInfoBean.WorkBaseBean workBaseBean);

    }

    interface Presenter {

        /**
         * 请求工序列表
         */
        void requestTainMain();

        /**
         * 请求可取消的项目
         */
        void getCancelWork();

        /**
         * 确定取消项目
         *
         * @param
         * @param isOne
         */
        void affirmCancelWork(List<CancelWorkBean> mList, boolean isOne);

        /**
         * 确定提前施工
         *
         * @param id
         */
        void updateAdavancService(long id);

        /**
         * 可以提前施工
         */
        void requestAdavance();

        /**
         * 进入的时候就开始校验 效验是否提交过
         */
        void validStartStep(String technicSn);

        void obtainWorkBase();

        /**
         * 获取店铺正在直播的房间轮询
         */
        void startStoreLiveRoom();

        /**
         * 停止轮询
         */
        void endStoreLiveRoom();
        //发布施工报告
        void  completeWorkBase(long id);
        /**
         * 开启直播
         */
        void generateLiveInfoOnLocal(long carId,boolean isCarOwnerRequired,long workBaseId );

        void listLiveUploadVideo(long workBaseId);

        void getWorkBase();
    }
}
